<?php
error_reporting ( 1 );
/**
 * Classe responsavel por criar a session do usuarios
 * com as devidas informacoes necessarias.
 */
class M_Session extends CI_Model {
	
	function __construct(){
           
            parent::__construct();
        }
        
        function criaSessao($usuario,$perfil){
            
            
            $this->session->set_userdata ( 'usuario', $usuario );
            
            
        }
	function criaSessao2($usuario, $senha, $unidade) {
	
              //  $idt = '1181510734';
               // $senha = '123';


		// declarando pois da erro sem isso
		$comma2 = '';
		$comma = '';
		$strUsuarioPerms = '';
		$strUsuarioPermsPags = '';
		$array_user_permissao = array ();
		$strCarteira = '';
		
                
		$queryUserSucem = $this->db->query ( "SELECT US.SENHA,
						      US.NIVEL,US.BANDEIRINHA,
						      US.SECAO_CODIGO,
						      SD.SIGLA_SECAO,
						      P.TITULO SIGLA_NIVEL
						      FROM USUARIO_SUCEM US
						      LEFT JOIN SECAO_DCEM SD ON SD.CODIGO = US.SECAO_CODIGO
						      INNER JOIN PERFIL P ON US.NIVEL = P.ID_PERFIL
						      WHERE US.PES_IDENTIFICADOR_COD = '$idt'
						      and US.ATIVO = '1'" );
		// confere se houve retorno da consulta no banco
		if ($queryUserSucem->num_rows () > 0) {
			
			foreach ( $queryUserSucem->result () as $row ) {
				
                                $passwod = $row->SENHA;
				$nivel = $row->NIVEL;
				$sigla_nivel = $row->SIGLA_NIVEL;


			}
		
			if ($passwod == $senha) {
				
				// inicia sessao e grava os dados na sessao
				$this->session->set_userdata ( 'idt', $idt );
				
				try {
					$queryPessoa = $this->db->query ( "SELECT NOME FROM PESSOA WHERE IDENTIFICADOR_COD ='$idt'" );
					$queryMilitar = $this->db->query ( "SELECT NOME_GUERRA, OM_CODOM , PG.SIGLA
									    FROM MILITAR M
									    INNER JOIN POSTO_GRAD_ESPEC PG ON PG.CODIGO = M.POSTO_GRAD_CODIGO
									    WHERE PES_IDENTIFICADOR_COD = '$idt'" );
				} catch ( Exception $ex ) {
					echo "Erro, consulta ao Banco: " . $ex->getMessage ();
				}
				foreach ( $queryMilitar->result () as $linhaMilitar ) {
					$nomeGuerra = $linhaMilitar->NOME_GUERRA;
					$codom = $linhaMilitar->OM_CODOM;
					$pstGrad = $linhaMilitar->SIGLA;
				}
				
				foreach ( $queryPessoa->result () as $linhaPessoa ) {
					$nome = $linhaPessoa->NOME;
				}


				
				$queryUsuarioFuncao = $this->db->query ( "SELECT DISTINCT FUNC_SISTEMA_COD 
                                                                            FROM USUARIO_FUNCAO
                                                                        WHERE USU_PES_IDENTIFICADOR_COD = '$idt'" );
                 		$carteiras = $queryUsuarioFuncao->result_array ();
				$comma = '';
				//Se gerente ou usurio

				foreach ( $carteiras as $key => $row ) {	
					$x ++;
					$strCarteira .= $comma . $row ['FUNC_SISTEMA_COD'];
					$comma = ',';
				}
				
				
				//die($strCarteira);
				$this->session->set_userdata ( 'carteira', @$carteiras );
				$this->session->set_userdata ( 'codom', @$codom );
				$this->session->set_userdata ( 'nomeGuerra', @$nomeGuerra );
				$this->session->set_userdata ( 'nome', $nome );
				$this->session->set_userdata ( 'secaoCod', $secaoCod );
				$this->session->set_userdata ( 'secao', $secao );
				$this->session->set_userdata ( 'logado', "1" );
				$this->session->set_userdata ( 'nivel', $nivel );
				$this->session->set_userdata ( 'pstGrd', $pstGrad );
				$this->session->set_userdata ( 'siglaNivel', $sigla_nivel );
                                $this->session->set_userdata ( 'band', $bandeira );

				
				if(!$strCarteira)   $strCarteira = 0;
				$this->session->set_userdata ( 'strCarteira', @$strCarteira );
				
				//$this->session->set_userdata('ultimoControle', "" );
				//$this->session->set_userdata('ultimoMenuPath',  "");
				//***********************************************************
				// setando as novas sessoes para o menu e permissão de paginas
				

				//pegando a relacao dos menus/paginas que  o usuario tem  acesso
				$queryPermsUsuario = $this->db->query ( "SELECT * FROM REL_MENU_USUARIO WHERE ID_USUARIO = '$idt'" );
				foreach ( $queryPermsUsuario->result () as $perms ) {
					$strUsuarioPerms .= $comma . $perms->ID_MENU;
					$comma = ',';
				}
				
				$array_user_permissao ['strUsuarioPerms'] = ",$strUsuarioPerms,";
				
				//pegando a relacao dos menus/paginas que  o usuario tem  acesso
				$queryPermsPaginas = $this->db->query ( "SELECT m.link as paginas 
									FROM MENUS m
									INNER JOIN  REL_MENU_USUARIO  rmu ON rmu.ID_MENU=m.ID_MENU
									WHERE 
									rmu.ID_USUARIO='$idt'" );
				
				foreach ( $queryPermsPaginas->result () as $perms ) {
					$strUsuarioPermsPags .= $comma2 . $perms->paginas;
					$comma2 = ',';
				}
				
				$array_user_permissao ['strUsuarioPermsPags'] = ",$strUsuarioPermsPags,";
				
				$_SESSION ['array_user_permissao'] = $array_user_permissao;
				
				
				//  lancar evento no log de acesso*/
				$msg = "Usuario Logado com Sucesso.";
				$this->tools_model->gravaLogSucem ( $msg );
				
				return TRUE;
			
			} else {
				//  lancar evento  de erro no log de acesso
				$msg = "Senha invalida.";
				$this->tools_model->gravaLogSucem ( $msg, $idt );
				return FALSE;
			
			}
		} else {
			//  lancar evento  de erro no log de acesso*/
			$msg = "Usuario Inexistente.";
			$this->tools_model->gravaLogSucem ( $msg, $idt );
			return FALSE;
		}
	
	}
	
	/**
	 * @method recuperaSession() Método recupera a sessao do usuario.
	 * @author  Secao de Informatica DCEM - Sgt Lemoel
	 * @since 20.11.08
	 * @return Boolean
	 */
	
	function recuperaSession() {
		
		if ($this->session->userdata ( 'idt' )) {
			return TRUE;
		} else {
			return FALSE;
		}
	
	}
	
	/**
	 * @method destroySession() destroi a sessao do usuario e cria um log.
	 * @author  Secao de Informatica DCEM - Sgt Lemoel
	 * @since 20.11.08
	 * @return Redirecionamento para pagina do Login
	 */
	function destroySession() {
		//Bibliotecas necessarioas ao "login_views"
		$this->load->library ( 'validation' );
		$this->load->helper ( array ('form', 'url' ) );
		
		//Verifica se exite uma sessao
		if ($this->recuperaSession ()) {
			$msg = "Sessao Encerrada.";
			$this->tools_model->gravaLogSucem ( $msg );
			$this->session->sess_destroy ();
		}
		$this->load->view ( 'login/login_views' );
	}
}
?>